open Type
open Operator

type expr_detail =
    | LInt of int
    | LFloat of float
    | LList of expr list
    | LVctr of expr list
    | LTple of expr list
    | LString of string
    | Uop of uop * expr
    | Id of string
    | Binop of expr * binop * expr
    | Call of string * (expr * tp) list
    | Elmt of string * expr
    | If of expr * expr * expr
    | Scope of stmt list * expr
    (*| Noexpr *)

and expr = expr_detail * tp

and stmt =
    | FDclr of tp * string * (tp * string) list * expr
    | VDclr of tp * string * expr

and program = stmt list

